package com.cleaningcloud.job.task;

import com.cleaningcloud.cld.api.RemoteTaskService;
import com.cleaningcloud.common.core.constant.SecurityConstants;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 云管理定时任务
 *
 * @author luotong
 */
@Component("cldTask")
public class CldTask {


    @Autowired
    private RemoteTaskService remoteTaskService;

    /**
     * @Author Shaw
     * @Description 员工离职
     * @date: 2025-06-18 14:04
     * @param: //TODO
     */
    public void staffResignationTask() {
        remoteTaskService.staffResignation(SecurityConstants.INNER);
    }

    /**
     * @Author Shaw
     * @Description 项目合同到期
     * @date: 2025-06-18 14:04
     * @param: //TODO
     */
    public void projectContractExpiresTask() {
        remoteTaskService.projectContractExpiresTask(SecurityConstants.INNER);
    }

    /**
     * @Author Shaw
     * @Description 资产折旧
     * @date: 2025-06-18 14:04
     * @param: //TODO
     */
    public void assetsDepreciationTask() {
        remoteTaskService.calculateAssetsDepreciationTask(SecurityConstants.INNER);
    }

    /**
     * @Author Shaw
     * @Description 项目发票生成
     *  注：从项目合同签订日那天开始算起按合同日期算出合同期间总月份，合同金额÷合同总月份=每月应开票金额。根据合同签订日每下月月底开始生成一条当月开票信息。如果是1号签订，则当月月底生成当月开票信息，如果不是1号签订，则下月月底生成下月开票信息。期间金额管理自行更改。合同结束日同上（新增发票表cld_invoice）。
     *  如：2024年8月15日签订合同至2025年8月16日合同结束。合同信息录入后9月30日生成9月1日-30日的开票信息。每月应开票金额÷当月天数=每天开票金额。
     *  签收状态由客户来操作是否签收，如果没操作默认15天后自动签收。
     * @date: 2025-06-18 16:05
     * @param: //TODO
     */
    public void projectInvoiceTask() {
        remoteTaskService.calculateProjectInvoiceTask(SecurityConstants.INNER);
    }

    /**
     * @Author Shaw
     * @Description 生成日历信息
     * @date: 2025-06-18 14:05
     * @param: //TODO
     */
    public void generateCalendarTask() {
        remoteTaskService.generateCalendarTask(SecurityConstants.INNER);
    }


    /**
     * @Author Shaw
     * @Description 初始化当日考勤记录
     * @date: 2025-06-18 14:01
     * @param: //TODO
     */
    public void initializeAttendanceTask() {
        remoteTaskService.initializeAttendanceTask(SecurityConstants.INNER);
    }

    /**
     * @Author Shaw
     * @Description 每日工服扣款
     * @Description 每日保险扣款
     * @Description 每日考勤薪酬
     * @date: 2025-06-18 14:01
     * @param: //TODO
     */
    public void dailySalaryCalculationTask() {
        remoteTaskService.dailySalaryCalculationTask(SecurityConstants.INNER);
    }

    /**
     * @Author Shaw
     * @Description 招聘计划计算
     * @date: 2025-06-18 14:02
     * @param: //TODO
     */
    public void recruitmentPlanTask() {
        remoteTaskService.recruitmentPlanTask(SecurityConstants.INNER);
    }

    /**
     * @Author Shaw
     * @Description 工作计划生成
     * @date: 2025-06-18 14:02
     * @param: //TODO
     */
    public void workPlanTask() {
        remoteTaskService.workPlanTask(SecurityConstants.INNER);
    }

    /**
     * @Author Shaw
     * @Description 工作计划自动确认
     * @date: 2025-06-18 14:02
     * @param: //TODO
     */
    public void automaticConfirmTask() {
        remoteTaskService.automaticConfirmTask(SecurityConstants.INNER);
    }

    /**
     * @Author Shaw
     * @Description 绩效考核
     * @date: 2025-06-18 14:02
     * @param: //TODO
     */
    public void performanceAppraisalTask() {
        remoteTaskService.performanceAppraisalTask(SecurityConstants.INNER);
    }

    /**
     * @Author Shaw
     * @Description 客户评价
     * @date: 2025-06-18 14:02
     * @param: //TODO
     */
    public void customerEvaluateTask() {
        remoteTaskService.customerEvaluateTask(SecurityConstants.INNER);
    }
}
